package com.taotao.manage.service;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.taotao.commen.ItemCatData;
import com.taotao.commen.ItemCatResult;
import com.taotao.manage.mapper.ItemCatMapper;
import com.taotao.manage.pojo.ItemCat;

@Service
public class ItemCatService extends BaseService<ItemCat>{

	@Autowired
	private ItemCatMapper itemCatMapper;
	
	
	/**
	 * 查询出所有的商品类目数据，并封装成三级结构
	 * 
	 * 查询一次，查询所有，对结果集进行整理
	 * @return
	 */
	public ItemCatResult queryItemCatAllToTree(){
		// 查找所有
		List<ItemCat> queryAll = super.queryAll();
		//Map<父类目id,子类目集合> map
		HashMap<Long, List<ItemCat>> map = new HashMap<Long,List<ItemCat>>();
		for(ItemCat itemCat : queryAll){
			if (!map.containsKey(itemCat.getParentId())) {
				map.put(itemCat.getParentId(), new ArrayList<ItemCat>());
			}
			map.get(itemCat.getParentId()).add(itemCat);
		}
		
		// 结果集
		ItemCatResult result = new ItemCatResult();
		ArrayList<ItemCatData> itemCatData1 = new ArrayList<ItemCatData>();
		result.setData(itemCatData1);
		// 一级类目
		List<ItemCat> itemCats1 = map.get(0L);
		for(ItemCat itemCat : itemCats1){
			ItemCatData itemCatData = new ItemCatData();
			// 添加一级类目
			itemCatData1.add(itemCatData);
			itemCatData.setUrl("/products/"+itemCat.getId()+".html");
			itemCatData.setName("<a href='/products/'"+itemCat.getId()+".html>"+itemCat.getName()+"</a>");
			// 二级类目
			ArrayList<ItemCatData> itemCatDatas2 = new ArrayList<ItemCatData>();
			itemCatData.setItemCatDatas(itemCatDatas2);
			//当前一级类目的所有子类目
			List<ItemCat> itemCat2 = map.get(itemCat.getId());
			for(ItemCat itemcat2 : itemCat2){
				ItemCatData itemCatData2 = new ItemCatData();
				itemCatDatas2.add(itemCatData2);
				itemCatData2.setUrl("/products/"+itemcat2.getId()+".html");
				itemCatData2.setName(itemcat2.getName());
				// 三级类目
				ArrayList<String> itemCatDatas3 = new ArrayList<String>();
				itemCatData2.setItemCatDatas(itemCatDatas3);
				List<ItemCat> itemCat3 = map.get(itemcat2.getId());
				for(ItemCat itemcat3 : itemCat3){
					itemCatDatas3.add("/products/"+itemcat3.getId()+".html|"+itemcat3.getName());
				}
			}
		}
		
		return result;
	}
	
	

}
